Method and apparatus for organizing notes on a limited resource computing device

ABSTRACT

A notes organizer program is provided that allows a user to organize notes on a limited resource computing device. The notes are organized by associating a note, if desired, with a project. The user can name or rename a note or a project. If the user does not specify a note name, the notes organizer program determines the note name based on the associated project. If there is no associated project, the note name is based on the type of note (e.g., voice, handwritten, etc.). A template project is provided for creating notes from templates.

FIELD OF THE INVENTION

This invention relates generally to computer systems, and moreparticularly to a method and system for organizing notes on a limitedresource computing device.

BACKGROUND OF THE INVENTION

Small, mobile computing devices such as personal desktop assistantsincluding hand-held and palm-type computers and the like are becomingincreasingly popular for use by business people and others who musttravel, and thus cannot readily access information stored on theirdesktop computer or office network workstation. Although laptopcomputers are capable of running virtually all of the applicationprograms that execute on desktop machines, laptop computers are ofteneither too large and/or too heavy to carry around. There is thus anincreased demand for substantially smaller palm-type computers that areable to run business applications of less complexity than those designedto run on a desktop computer and enable a user to quickly access alltypes of personal and business related data, such as addresses,telephone numbers, scheduled appointment times, etc.

One such palm-type computer is Microsoft's Palm-size PC. A Palm-size PCincludes a touch screen display. The user may input data by touching astylus to a user interface that is displayed on the touch screendisplay. A Palm-size PC user interface touch screen display is similarin appearance to a Windows user interface displayed on a desktop orlaptop PC. A taskbar, used for invoking application programs, isdisplayed at the bottom of the touch screen display of the Palm-size PC.The user interface displayed on the touch screen display also includes avirtual keyboard for entering data.

One of the main reasons that a user will use a palm-type computer is tocreate and store notes when he or she is away from his or her desktopcomputer. Notes can be created on the Palm-size PC using variousmethods, including: typing a note using a virtual keyboard; handwritinga note using a stylus; and recording a note using a built-in recorder.Because notes can become voluminous, a method for organizing such notesin a logical manner is desirable. The present invention is directed tologically organizing notes on a limited resource computing device, suchas a palm-type computer.

SUMMARY OF THE INVENTION

The present invention is directed to a method, and system for organizingnotes on a limited resource computing device, such as Microsoft'sPalm-size PC, according to projects. A user interface is provided forcreating a note. In response to a user requesting saving the note, thenote is stored. If an active project exists when the note is stored, thenote is associated with the active project.

In accordance with other aspects of the present invention, the user cancreate a project.

In accordance with further aspects of the present invention, the usercan designate a project as an active project. A new note is associatedwith an active project, if an active project exists, when the note issaved.

In accordance with yet further aspects of the present invention, a notename is determined when a note is saved. The note name may be specifiedby the user or determined based on text found in the note. When based ontext found in the note, the text of the note is analyzed (e.g., speechrecognition or handwriting recognition is applied to the text) and thenote name is determined based on the first line of valid text found inthe note.

In accordance with still other aspects of the present invention, thenote name may be a default note name. A default note name is asequential note name based on the active project (e.g., PROJX1, PROJX2,etc.). If there is no active project, the default note name is asequential file name based on the type of note (e.g., VOICE1, VOICE2,etc.).

In accordance with yet other aspects of the present invention, a notesindex window is provided to display summary information for all notes,or for notes associated with a specific project. Preferably, the summaryinformation contains fields for the note name, associated project, notetype, memory location, note size, and note time. The notes can bedisplayed in ascending or descending order based on any field of thesummary information.

In accordance with still further aspects of the present invention, atemplates project is provided. The templates project is accessible fromany other project. The templates project allows a user to create a notefrom an existing template.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of thisinvention will become more readily appreciated as the same becomesbetter understood by reference to the following detailed description,when taken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a block diagram of a hand-held personal computing devicesuitable for implementing the present invention;

FIG. 2A illustrates an exemplary user interface for creating a noteusing a virtual keyboard on a hand-held personal computing device;

FIG. 2B illustrates an exemplary user interface for creating an ink noteon a hand-held personal computing device;

FIG. 2C illustrates an exemplary user interface for saving a note;

FIG. 2D illustrates an options user interface for the save not userinterface of FIG. 2C;

FIG. 2E illustrates an exemplary user interface for organizing andmaintaining projects;

FIG. 2F illustrates an extended view of the save notes user interface ofFIG. 2C;

FIG. 2G illustrates an exemplary notes index window;

FIG. 2H illustrates an exemplary user interface for configuring thedisplay of the notes index window of FIG. 2G;

FIG. 2I illustrates an exemplary user interface for modifying theproperties of a note;

FIG. 3 is a flow diagram illustrating the overall logic used to organizenotes in accordance with the present invention;

FIG. 4A is a flow diagram illustrating in detail the logic used toperform a project function;

FIGS. 4B and 4C are flow diagrams illustrating in detail the logic usedto perform a note function;

FIG. 4D is a flow diagram illustrating in detail the logic used toperform a template function;

FIG. 4E is a flow diagram illustrating in detail the logic used toperform a view function;

FIG. 5 is a flow diagram illustrating in detail the logic used to save anote;

FIG. 6 is a flow diagram illustrating in detail the logic used to obtaina name for saving a note;

FIG. 7 is a flow diagram illustrating in detail the logic used to searcha note for a valid note name;

FIG. 8 is a flow diagram illustrating in detail the logic used toperform recognition on a note; and

FIG. 9 is a flow diagram illustrating in detail the logic used to obtaina default note name.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

FIG. 1 and the following discussion are intended to provide a brief,general description of a suitable computing environment in which theinvention may be implemented. Although not required, the invention willbe described in the general context of computer-executable instructions,such as program modules, being executed by a hand-held personalcomputing device such as a personal desktop assistant. Generally,program modules include routines, programs, objects, components, datastructures and the like that perform particular tasks or implementparticular abstract data types.

While those skilled in the art will appreciate that the invention isideally suited for use with a hand-held personal computing device and isdescribed in combination with such a device, it is to be understood thatthe invention can be practiced in other limited resource devices andsystems, for example, mobile devices such as pagers and telephones.

FIG. 1 illustrates an exemplary system for implementing the invention.More specifically, FIG. 1 illustrates a general purpose computing devicein the form of a hand-held personal computing device 20 that includes aprocessing unit 21, a system memory 22, and a system bus 23 that couplesvarious system components including the system memory 22 to theprocessing unit 21. The system bus 23 may be any of several types of busstructures including a memory bus or memory controller, a peripheralbus, and a local bus using any of a variety of bus architectures. Thesystem memory includes read-only memory (ROM) 24 and random accessmemory (RAM) 25. A basic input/output system (BIOS) 26, containing thebasic routines that help to transfer information between elements withinthe hand-held personal computing device 20, such as during start-up, isstored in the ROM 24. The system may also include one or more removableflash memory cards (not shown) and/or PC memory cards (not shown).

A number of program modules are stored in the ROM 24 and/or RAM 25,including an operating system 28 (preferably, Windows CE), one or moreapplication programs 29, other program modules 30 and program data 31. Auser may enter commands and information into the hand-held personalcomputing device 20 through input devices such as a touch sensitivedisplay 32 with suitable input detection circuitry 33. Other inputdevices may include a microphone 34 connected through a suitable audiointerface 35 and a physical (hardware) keyboard (not shown). The outputcircuitry of the touch sensitive display 32 is also connected to thesystem bus 23 via a video driver 37. In addition to the display 32, thehand-held personal computing device 20 may include other peripheraloutput devices, such as at least one speaker 38 and printers (notshown).

Other external input or output devices 39 such as a joystick, game pad,satellite dish, scanner or the like may be connected to the processingunit 21 through an RS-232 or the like serial port 40 and serial portinterface 41 that is coupled to the system bus 23, but may be connectedby other interfaces, such as a parallel port, game port or universalserial bus (USB). The hand-held personal computing device 20 may furtherinclude or be capable of connecting to a flash card memory (not shown)through an appropriate connection port (e.g., slot) 42 and interface 43.A number of hardware buttons 44 such as switches, buttons (e.g., forswitching applications) and the like may be further provided tofacilitate user operation of the hand-held personal computing device 20,and are also connected to the system via a suitable interface 45. Aninfrared port 46 and corresponding interface/driver 47 are provided tofacilitate communication with other peripheral devices, including othercomputers, printers, and so on (not shown). It will be appreciated thatthe various components and connections shown are exemplary and othercomponents and means of establishing communications links may be used.

The soft input panel architecture is primarily designed to enablecharacter, key-based and other user data input via the touch sensitivedisplay 32 using a stylus (not shown) of the hand-held personalcomputing device 20 rather than a physical keyboard (not shown).However, as can be appreciated, a given hand-held personal computingdevice 20 may optionally and additionally include a physical keyboard.As will become more apparent from the following description, the “softinput panel” need not be limited to a touch-sensitive panel arranged fordirectly receiving input, but may alternatively include other inputdevices such as the microphone 34. For example, spoken words may bereceived at the microphone 34, recognized, and displayed as text in anon-screen window.

A user can create a note on the hand-held personal computing device 20by various methods, including: recording using a built-in recorder;inputting text using a virtual keyboard or an external hardwarekeyboard; or handwriting the note using a stylus. FIG. 2A illustrates anexemplary user interface for creating a note using a virtual keyboard50. Using a stylus, the user inputs text 52 by causing the stylus tocontact the keys of the virtual keyboard 51 displayed on the touchsensitive display 32 of the palm-type computing device 20. FIG. 2Billustrates an exemplary user interface for creating a handwritten, orink note. The user handwrites text 54 onto the touch sensitive display32 of the hand-held personal computing device 20 using a stylus.

The present invention provides a method of logically organizing notes ona hand-held computing device, such as Microsoft's Palm-size PC. Thenotes are organized by project. The project structure is similar to adirectory structure. This structure not only allows notes to belogically organized, the structure also allows a user to easily transfernotes from a hand-held personal computing device to a laptop or desktopcomputer device in an organized manner.

A user can save the note that he or she created. Preferably, a save,and/or save as, option is included on the user interface associated withany of the available note creation methods. FIG. 2C illustrates anexemplary Save as user interface 56 for saving a note. The Save as userinterface 56 includes an edit box for the name of the note 57.Preferably, the user interface will display a default note name and theuser can change the default note name, if desired. In a preferredembodiment, the default note name is based on the text of the note, ifpossible. If a note name cannot be determined based on the text of thenote, a default note name is determined based on the active project, ifthere is one, or the type of the note (e.g., recording). The Save asuser interface 56 illustrated in FIG. 2C includes an Options button 58,and a Create in button 59. The Create in button 59 extends the Save asuser interface 56 in the manner illustrated in FIG. 2F, and describedlater. The Options button 58 causes the display of an Options userinterface, illustrated in FIG. 2D, and described next.

The Options user interface 67 illustrated in FIG. 2D includes a Locationlist 68 that allows a user to select a location to save a note. Morespecifically, the Location list 68 allows a user to save the note inmain memory or in any other installed non-volatile memory, such as aflash memory card or a PC memory card. Preferably, a project can existin multiple locations (e.g., main memory and Compact Flash). The Optionsuser interface 67 also includes a Type field 69. The Type field 69 isdetermined by the note type, for example, InkWriter Note, Text Note,etc., and cannot be modified by the user.

FIG. 2E illustrates a projects user interface, also known as the Foldersuser interface 70, for organizing and maintaining projects. Theorganization or structure for projects includes a top, or projects,directory. Each project is a folder stored in the projects directory.All notes associated with a given project are stored in the folder ofthe associated project. If a note is not associated with any project, itis stored in the top, or projects, directory. Project directories can belocated in multiple removable file systems, such as compact Flash cards,as well as main memory. The Folders user interface 70 includes a list ofall of the projects 72, where a user can select one of the projects. Allprojects appear in the projects list 72, regardless of the project'slocation (e.g., main memory, Flash card, etc.). If there are multiplenotes with the same name for a given project, all notes will be listed.Preferably, notes not stored in main memory will be distinguishable fromnotes stored in main memory, for example, by displaying an asterisk nextto the name of the note not stored in main memory. Preferably, theFolders user interface 70 will automatically update if any projectdirectories are removed or added (e.g., by removing or adding a compactFlash card). A New button 74 is provided for creating a new project. ARename button 75 is provided for changing the name of a selectedproject. A Delete button 76 allows the user to delete a selectedproject.

FIG. 2F illustrates an extended view of the Save as user interface 60illustrated in FIG. 2C. The extension to the user interface is similarto the Folders user interface 70 illustrated in FIG. 2E. A Create inlist 61 displays all of the projects. Exactly one project (or<none>)must be selected from the list. A default project is selected when theuser interface is initially displayed. The default project is the activeproject. If there is no active project, the default is set to <none>. Ifthe selected project is none, the note will not be associated with anyproject, and will be stored in the top, or projects, directory. A Newbutton 62 is provided for the user to create a new project. A Renamebutton 63 allows the user to change the name of the selected project. ADelete button 64 allows the user to delete a selected project.

A notes index window 80, such as the one illustrated in FIG. 2G displayssummary information about notes. A Folder field 82 displays the name ofthe active project, or<none> if there is no active project. If a projectis selected, a notes summary window 86 displays information for all ofthe notes associated with the specified project, and filtered by thenote type (69 in FIG. 2D). A column header line 84 enumerating eachsummary information field is displayed above the notes summary window86. If a project is not selected, (i.e., no active project), the notessummary window shows summary information for all of the notes including:the note name, associated project, date, size and memory location.Preferably, the user can sort the order of the notes, but cannot changeor delete the order of the columns. In alternate embodiments, the usercan change the order of and/or delete columns. In a preferred embodimentof the invention, the user can also specify the size of the columns.Preferably, the user can also sort the notes on any column in eitherascending or descending order, for example, by selecting the desiredfield in the column header line 84. FIG. 2H illustrates an exemplaryuser interface for selecting and ordering the columns 88 to display inthe notes index window 86. All of the available summary informationfields (i.e., columns) are displayed in a Columns to display list 90.The user selects the columns to be displayed, e.g., by checking a boxnext to the columns to display. The order of the columns can be changedby selecting a column, and pressing a Move Up button 91 or a Move Downbutton 92.

In a preferred embodiment, the user can select one or more notes in thenotes index window (86 of FIG. 2G). Preferably, the notes can be fromdifferent projects and/or removable file systems (e.g., main memory orcompact Flash). The user can then perform one or more operations on thenote or notes, e.g., edit the note, or modify the note properties. Noteproperties can be modified via a user interface such as the oneillustrated in FIG. 2I. The note properties user interface 93 displaysthe current properties of a note and allows the user to modify some ofthe note properties. The note name can be changed by entering a new notename in a Name box 94. The note can be associated with a differentproject by selecting a project from a Folder list 95. The note may bemoved to a new location by selecting a location from the Location list96. The note properties user interface also displays non-modifiable noteproperties including: Type 97; Size 98; and time Modified 99.

FIG. 3 illustrates a flow diagram of the overall logic used to organizenotes in accordance with the present invention. The logic moves from astart block to a block 100 where a user selection is obtained. After theuser selection is obtained, the specified user selection is performed.For ease of understanding, user functions have been divided into fourcategories: project functions; note functions; template functions; andview functions. It will be appreciated that the steps of determininguser function by category are for ease of understanding by the reader,and are preferably bypassed in an actual embodiment of the invention.After a user selection is obtained, the logic proceeds to a decisionblock 102 where a test is made to determine if the user selection is aproject function. If the user selection is a project function the logicmoves to a block 104 where the selected project function is performed.

The logic of performing a selected project function 104 is illustratedin detail in FIG. 4A. FIG. 4A illustrates exemplary project functions.It will be appreciated that other project functions can be included inactual embodiments of the invention, if desired. The logic of FIG. 4Amoves from a start block to a decision block 120 where a test is made todetermine if the user selection is to create a project. If the userselection is to create a project, the logic proceeds to a block 122where a name for the new project is obtained, preferably from a user viaa suitable user interface, such as the one shown in FIG. 2E. The logicthen proceeds to a block 124 where a new project is created with thename obtained. The logic of performing the selected project function(i.e., creating a project) then ends and the process returns to FIG. 3.

If in decision block 120 it is determined that the user selection is notto create a project, the logic proceeds to a decision block 126 where atest is made to determine if the user selection is to change the activeproject. If the user selection is to change the active project, thelogic moves to a block 128 where a selection of a new active project isobtained, preferably from the user via a suitable user interfacecontaining a list of current projects. Preferably, the user can alsoselect not to have an active project. The logic then moves to a block130 where the selected project is set as the active project. The logicof performing the selected project function (i.e., changing the activeproject) then ends and the process returns to FIG. 3.

If in decision block 126 it is determined that the user selection is notto change the active project, the logic proceeds to a decision block 132where a test is made to determine if the user selection is to rename aproject. If the user selection is to rename a project, the logicproceeds to a block 134 where the selection of the project to rename isobtained, preferably from the user via a suitable user interfaceincluding a list of projects, such as the one shown in FIG. 2E. Thelogic then moves to a block 136 where a new name for the selectedproject is obtained, preferably from the user via a suitable userinterface. The name of the selected project is then changed to the newname obtained, in a block 138. The logic then moves to a block 140 wherenote associations are maintained for the selected project. All notesassociated with the project will still be associated with the renamedproject. The note names will not be changed. The logic for performingthe selected project function (i.e., renaming a project) then ends andthe process returns to FIG. 3.

If in decision block 132 it is determined that the user selection is notto rename a project, the logic proceeds to a decision block 142 where atest is made to determine if the user selection is to delete a project.If the user selection is to delete a project, the logic moves to a block144 where a selection of projects to delete is obtained, preferably fromthe user via a suitable user interface containing a list of projects,such as the one shown in FIG. 2E. The logic then proceeds to a block 146where the selected project is deleted. The logic for performing aselected project function (i.e., deleting a project) then ends and theprocess returns to FIG. 3. Likewise, if in decision block 142 it isdetermined that the user selection is not to delete a project, the logicfor performing the selected project function ends and the processreturns to FIG. 3.

Returning to FIG. 3, if in decision block 102 it is determined that theuser selection is not a project function, the logic proceeds to adecision block 106 where a test is made to determine if the userselection is a note function. If the user selection is a note function,the logic proceeds to a block 108 where the selected note function isperformed.

The logic of performing a selected note function 108 is illustrated indetail in FIGS. 4B and 4C. FIGS. 4B and 4C illustrate exemplary notefunctions. It will be appreciated that other note functions can beincluded in other embodiments of the invention, if desired. It will alsobe appreciated that note functions apply to any type of note (e.g.,voice note, ink note, etc.). The logic of FIG. 4B moves from a startblock to a decision block 150 where a test is made to determine if theuser selection is to create a note. If the user selection is to create anote, the logic proceeds to a block 152 where a user interface, such asthe one shown in FIG. 2A, or the one shown in FIG. 2B, is provided forcreating a note. The logic of performing the selected note function(i.e., creating a note) then ends and the process returns to FIG. 3.

If in decision block 150 it is determined that the user selection is notto create a note, the logic proceeds to a decision block 154 where atest is made to determine if the user selection is to edit a note. Ifthe user selection is to edit a note, the logic proceeds to a block 156where a user interface is provided for editing a note. The logic ofperforming the selected note function (i.e., editing the note) then endsand the process returns to FIG. 3.

If in decision block 154 it is determined that the user selection is notto edit a note, the logic proceeds to a decision block 158 where a testis made to determine if the user selection is to save a note. If theuser selection is to save a note, the logic proceeds to a block 160where the note is saved.

The logic of saving a note 160 is illustrated in detail in FIG. 5.Preferably, the user selection to save a note is available from the userinterface provided when the user selects to create or edit a note. Anexemplary save user interface that is displayed when a user selects thefunction of saving a note is illustrated in FIG. 2C. The logic of FIG. 5moves from a start block to a block 250 where a note name for saving thenote is obtained. The logic for obtaining the note name for saving thenote 250 is illustrated in detail in FIG. 6. The logic of FIG. 6 movesfrom a start block to a decision block 270 where a test is made todetermine if the user specified a note name. If the user specified anote name, the logic moves to a block 272 where the note name is set tothe name specified by the user. The logic of obtaining a note name forsaving the note (i.e., a user specified note name) then ends and theprocess returns to FIG. 5. If the user did not specify a note name, thelogic moves to a block 274 where the note is searched for a valid notename.

The logic of searching a note for a valid note name 274 is illustratedin detail in FIG. 7. The logic of FIG. 7 moves from a start block to ablock 300 where the note is searched for a first line of text. The logicthen moves to a decision block 302 where a test is made to determine ifa first line of text was found in the note. If a first line of text wasnot found in the note, the logic of searching a note for a valid notename ends and the process returns to FIG. 6. If, however, a first lineof text was found in the note, the logic proceeds to a block 304 whereTemp_Note_Name is set to the first line of text found in the note.Invalid characters are removed from Temp_Note_Name, in a block 306.Preferably, invalid characters are invalid filename characters (e.g.,“/”, etc.) for the operating system 28 of computing system 20 on whichthe invention is implemented. The logic then proceeds to a decisionblock 308 where a test is made to determine if the length ofTemp_Note_Name exceeds a maximum note name length (e.g., the maximumfile name length for the operating system 28 of computing system 20 onwhich the invention is implemented). If the length of Temp_Note_Nameexceeds the maximum note name length, the logic proceeds to a block 310where Temp_Note_Name is truncated to the maximum note name length.Regardless of whether it is determined in decision block 308 that thelength of Temp_Note_Name exceeds the maximum note name length, the logicproceeds to a decision block 312 where a test is made to determine ifTemp_Note_Name is a valid note name. If Temp_Note_Name is a valid notename, the logic proceeds to a block 314 where the note name is set toTemp_Note_Name. Regardless of whether Temp_Note_Name is a valid notename, the logic of searching a note for a valid note name then ends andthe process returns to FIG. 6.

Returning to FIG. 6, after searching the note for a valid note name 274,the logic proceeds to a decision block 276 where a test is made todetermine if a valid note name was found in the note. If a valid notename was found in the note, the note name was set to the valid note namein block 314 of FIG. 6, and the logic of obtaining a note name forsaving the note ends and the process returns to FIG. 5. If a valid notename was not found in the note, the logic proceeds to a block 280 whererecognition is performed on the note.

The logic of performing recognition on the note 280 is illustrated indetail in FIG. 8. The logic of FIG. 8 moves from a start block to ablock 320 where the type of note, (e.g., voice, ink, etc.) isdetermined. The logic then proceeds to a decision block 322 where a testis made to determine if there is a recognition program installed for thedetermined note type. If an appropriate recognition program is notinstalled, recognition cannot be performed on the note, and the logicfor performing recognition on a note ends in a block. If, on the otherhand, there is a recognition program installed for the determined notetype, the logic proceeds to a block 324 where recognition is performedon the note (e.g., speech recognition is performed on a voice note).After recognition is performed on the note, the logic proceeds to block274 where the recognized note is searched for a valid note name. Thelogic of searching a note for a valid note name is illustrated in detailin FIG. 7, and described above. The logic of performing recognition thenends and the process returns to FIG. 6.

Returning to FIG. 6, after performing recognition on the note 280, thelogic proceeds to a decision block 282 where a test is made to determineif a valid note name was found in the recognized note. If a valid notename was found in the recognized note, the note name was set to thevalid note name found in the recognized note in block 314 of FIG. 7, andthe logic of obtaining a note name for saving the note ends and theprocess returns to FIG. 5. If a valid note name was not found in therecognized note, the logic proceeds to a block 286 where a default notename is obtained.

The logic of obtaining a default note name 286 is illustrated in detailin FIG. 9. The logic of FIG. 9 moves from a start block to a decisionblock 340 where a test is made to determine if there is an activeproject. If there is an active project, the logic proceeds to a block342 where the note name is set to the next default project name (e.g.,PROJX1, PROJX2, etc.). If there is not an active project, the logicproceeds to a block 344 where the type of note is obtained. The logicthen proceeds to a block 346 where the note name is set to the nextdefault name for the note type (e.g. VOICE1, VOICE2, etc.). After thenote name is set to the appropriate default note name, the logic ofobtaining a default note name ends and the process returns to FIG. 6.

Returning to FIG. 6, after the note name has been set to a default notename 286, the logic of obtaining a name for saving a note ends and theprocess returns to FIG. 5.

Returning to FIG. 5, after obtaining the note name for saving a note250, the logic proceeds to a block 252 where the note is saved using thenote name obtained. The logic then proceeds to a decision block 254where a test is made to determine if there is an active project. Ifthere is an active project, the logic proceeds to a block 256 where thesaved note is associated with the active project. If there is not anactive project, the saved note is not initially associated with anyproject. (i.e., it is stored in the top, or projects, directory).Regardless of whether there is an active project, the logic of saving anote then ends and the process returns to FIG. 4B.

Returning to FIG. 4B, after the logic of performing the selected notefunction (i.e., saving a note) ends and the process returns to FIG. 3.Alternatively, if in decision block 158 it is determined that the userselection is not to save a note, the logic proceeds to a decision block162 where a test is made to determine if the user selection is to renamea note. If the user selection is to rename a note, the logic proceeds toa block 164 where a selection of a note to rename is obtained,preferably from the user via a suitable user interface, such as the oneshown in FIG. 2I. The logic then proceeds to a block 166 where a newname for the selected note is obtained, preferably from a userinterface. The logic then moves to a block 168 where the name of theselected note is changed to the new name. The logic then moves to ablock 170 where project associations for the selected note aremaintained. The note will be associated with the same project, if any,as prior to the renaming of the note. The logic of performing theselected note function (i.e., renaming a note) then ends and the processreturns to FIG. 3.

If in decision block 162 it is determined that the user selection is notto rename a note, the logic proceeds to a decision block 172 (FIG. 4C)where a test is made to determine if the user selection is to associatea note with a project. If the user selection is to associate a note witha project, the logic proceeds to a block 174 where the selection of anote to associate with a project is obtained, preferably by the user viaa suitable user interface. The logic then moves to a block 176 where theselection of a project to associate with the. selected note is obtained,preferably by the user via a suitable user interface, such as the oneshown in FIG. 2I. The logic then moves to a block 178 where the selectednote is associated with the selected project. The logic of performing anote function (i.e., associating a note with a project), then ends andthe process returns to FIG. 3.

If in a decision block 172 it is determined that the user selection isnot to associate a note with a project, the logic proceeds to a decisionblock 180 where a test is made to determine if the user selection is todelete a note. If the user selection is to delete a note, the logicmoves to a block 181 where a selection of a note to delete is obtained,preferably from the user. The logic then proceeds to a block 182 wherethe selected note, and project association, if there is one, aredeleted. The logic of performing the selected note function (i.e.,deleting a note) then ends and the process returns to FIG. 3.

If in a decision block 180 it is determined that the user selection isnot to delete a note, the logic proceeds to a decision block 184 where atest is made to determine if the user selection is to change thelocation of a note. If the user selection is to change the location of anote, the logic moves to a block 185 where a selection of a note to moveis obtained, preferably from the user. The logic then moves to a block186 where a location to move the note is obtained, preferably via asuitable user interface, such as the one shown in FIG. 2I. The logicthen proceeds to a block 188 where the selected note is moved to thespecified location. The logic of performing the selected note function(i.e., changing the location of a note) then ends and the processreturns to FIG. 3. Alternatively, if in decision block 184 it isdetermined that the user selection is not to change the location of thenote, the process returns to FIG. 3.

Returning to FIG. 3, if in decision block 106 it is determined that theuser selection is not a note function, the logic proceeds to a decisionblock 110 where a test is made to determine if the user selection is atemplate function. If the user selection is a template function, thelogic proceeds to a block 112 where the selected template function isperformed.

The logic of performing a selected template function 112 is illustratedin detail in FIG. 4D. The logic of FIG. 4D moves from a start block to adecision block 190 where a test is made to determine if the userselection is to create a template. If the user selection is to create atemplate, the logic proceeds to a block 192 where a user interface isprovided for creating a template. The logic of performing the selectedtemplate function (i.e., creating a template) then ends and the processreturns to FIG. 3.

If the user selection is not to create a template, the logic proceeds toa decision block 194 where a test is made to determine if the userselection is to edit a template. If the user selection is to edit atemplate, the logic proceeds to a block 196 where a selection of atemplate is obtained from the templates project. The logic then proceedsto a block 198 where a user interface is provided to edit the selectedtemplate. The logic of performing the selected template function (i.e.,edit a template) then ends and the process returns to FIG. 3.

If in decision block 194 it is determined that the user selection is notto edit a template, the logic proceeds to a decision block 200 where atest is made to determine if the user selection is to save a template.If the user selection is to save a template, the logic proceeds to ablock 202 where a name for saving the template is obtained, preferablyby the user via a suitable user interface. The logic then proceeds to ablock 204 where the template is saved using the name obtained. The logicthen moves to a block 206 where the saved template is associated withthe templates project. The logic of performing the selected templatefunction (i.e., save a template) then ends and the process returns toFIG. 3.

If in decision block 200 it is determined that the user selection is notto save a template, the logic proceeds to a decision block 208 where atest is made to determine if the user selection is to create a note froma template. If the user selection is to create a note from a template,the logic proceeds to a block 210 where the selection of a template isobtained from the templates project. The logic then moves to a block 212where a user interface is provided for creating a note based on theselected template. When the note is saved, it will be associated withthe active project, if there is an active project. The logic ofperforming the selected template function (i.e., create a note from atemplate) ends and the process returns to FIG. 3. Likewise, if indecision block 208 it is determined that the user selection is not tocreate a note from a template, the logic for performing the selectedtemplate function ends and the process returns to FIG. 3.

Returning to FIG. 3, if in decision block 110 it is determined that theuser selection is not a template function, the logic proceeds to a block114 where the selected view function is performed. The logic ofperforming a selected view function 114 is illustrated in detail in FIG.4E. The logic of FIG. 4E moves from a start block to a decision block220 where a test is made to determine if the user selection is to sort.If the user selection is to sort, the logic proceeds to a block 222where sort criteria for the notes index summary information, e.g., 86 inFIG. 2G, is obtained, preferably from the user, for example via a userinterface such as the one shown in FIG. 2H. The logic then proceeds to adecision block 224 where a test is made to determine if there is anactive project. If there is an active project, summary information forall notes associated with the active project is displayed in sortedorder based on the sort criteria, in a block 226. If there is not anactive project, summary information for all notes is displayed in sortedorder based on the sort criteria, in a block 227. Preferably, sortingcriteria can be in ascending or descending order, of any data in thesummary information displayed in the notes index display, including thenote name, associated project, (if any), note type, memory location(e.g., main memory or storage card memory), note size and note time.After the summary information is displayed in sorted order, either forthe active project 226, or for all projects 223, the logic of performingthe selected view function (i.e., sorting) ends and the process returnsto FIG. 3.

If in decision block 220 it is determined that the user selection is notto sort, the logic proceeds to a decision block 228 where a test is madeto determine if the user selection is to display the view display. Theview state is the last known state. This enables the user to performanother task, and then return to organizing notes where he or she leftoff. If the user selection is to display the view display, the logicproceeds to a block 230 where the last view state is obtained. The logicthen proceeds to a decision block 232 where a test is made to determineif the last view state was a note. If the last view state was a note,the logic proceeds to a block 234 where the note from the last viewstate is displayed. The logic of performing the selected view function(i.e., display view state where last view state is a note) then ends andthe process returns to FIG. 3.

If the last view state was not a note, it was a notes index window, andthe logic moves to a block 236 where sort criteria and the activeproject for the last notes index view state are obtained. The logic thenproceeds to a decision block 238 where a test is made to determine ifthere was an active project for the last notes index view state. Ifthere was an active project for the last notes index view state, thelogic proceeds to a block 240 where summary information about notes forthe active project of the last notes index view state are displayed insorted order based on the sort criteria of the last view state. If therewas not an active project for the last notes index view state, the logicproceeds to a block 242 where notes for all projects of the last notesindex view state are displayed in sorted order based on the sortcriteria of the last view state. After performing the specified userselection, the logic for performing a selected view function (i.e.,display notes index window with summary information) ends and theprocess returns to FIG. 3. Alternatively, if in decision block 228 it isdetermined that the user selection is not to display the view display,the logic for performing the selected view function ends and the processreturns to FIG. 3.

Returning to FIG. 3, after the selected user function has been performed(i.e., selected project function, note function, template function, orview function), the logic proceeds to a decision block 116 where a testis made to determine if an exit signal has been received. If an exitsignal has not been received, the logic returns to block 100 where a newuser selection is obtained and processed. User selections are obtainedand processed repeatedly until an exit signal is received. If indecision block 116 it is determined that an exit signal has beenreceived, the logic of organizing notes, ends.

While the preferred embodiment of the invention has been illustrated anddescribed, it will be appreciated that various changes can be madetherein without departing from the spirit and scope of the invention asdefined by the appended claims.

The embodiments of the invention in which an exclusive property orprivilege is claimed are defined as follows:
 1. A method for organizingnotes on a limited resource computing device comprising: (a) providingan interface for a user to create a note; (b) in response to a userrequesting saving the note, storing the note; (c) automaticallydetermining if there is an active project, wherein there is not morethan one active project at the same time; and (d) if there is an activeproject, automatically associating the note with the active project. 2.The method of claim 1, further comprising, in response to the userspecifying a project name, creating the specified project.
 3. The methodof claim 2, further comprising, in response to a user specifying aproject location, creating the project at the specified location.
 4. Themethod of claim 1, further comprising, in response to a user designatinga project as active, setting the active project to the projectdesignated by the user.
 5. The method of claim 1, wherein storing thenote comprises determining a note name.
 6. The method of claim 5,wherein the note name is specified by the user.
 7. The method of claim5, wherein the note name is determined based on a first line of text inthe note.
 8. The method of claim 7, wherein determining the note namefrom the first line of text comprises: (a) searching the note for thefirst line of text; and (b) if the first line of text is found in thenote: (i) removing any invalid characters from the first line of text;(ii) truncating the first line of text if it exceeds a maximum note namelength; and (iii) verifying that the first line of text is a valid notename.
 9. The method of claim 8, further comprising performingrecognition to determine the first line of text.
 10. The method of claim5, wherein the note name is a default note name.
 11. The method of claim10, wherein determining the default note name comprises: (a) determiningif there is an active project; (b) if there is an active project,setting the note name to the next project default note name; and (c) ifthere is not an active project, setting the note name to the nextnon-project default note name.
 12. The method of claim 11, whereinsetting the note name to the next non-project default note name furthercomprises: (a) determining a note type; and (b) setting the note name tothe next default for the note type.
 13. The method of claim 1, wherein auser requesting saving the note comprises the user specifying a notelocation, and storing the note comprises storing the note at thespecified location.
 14. The method of claim 1, wherein providing aninterface for a user to create a note comprises providing an interfacefor a user to create a note from a template.
 15. The method of claim 1,further comprising: (a) in response to a user requesting a notes indexwindow display, determining if there is an active project; (b) if thereis an active project, displaying a note name and associated summaryinformation for each of the notes associated with the active project;and (c) if there is not an active project, displaying a note name andassociated summary information for each of the notes for all projects.16. The method of claim 15, further comprising, in response to a userrequesting sorting, displaying the note name and associated note datafor each of the notes in sorted order.
 17. An apparatus for organizingnotes on a limited resource computing device, comprising: (a) aprocessing unit; and (b) a storage medium coupled to the processingunit, the storage medium storing program code implemented by theprocessing unit for: (i) providing an interface for a user to create anote; (ii) in response to a user requesting saving the note, storing thenote; (iii) automatically determining if there is an active project,wherein there is not more than one active project at the same time; and(iv) if there is an active project, automatically associating the notewith the active project.
 18. The apparatus of claim 17, wherein theprogram code implemented by the processing unit further creates aspecified project, in response to the user specifying a project name.19. The apparatus of claim 18, wherein the project created is created ata location specified by the user.
 20. The apparatus of claim 17, whereinthe program code implemented by the processing unit further sets aproject as active in response to a user designating the project asactive.
 21. The apparatus of claim 17, wherein storing the notecomprises determining a note name.
 22. The apparatus of claim 21,wherein the note name is specified by the user.
 23. The apparatus ofclaim 21, wherein the note name is determined based on a first line oftext in the note.
 24. The apparatus of claim 23, wherein the programcode implemented by the processing unit determines the note name fromthe first line of text by: (a) searching the note for the first line oftext; and (b) if the first line of text is found in the note: (i)removing any invalid characters from the first line of text; (ii)truncating the first line of text if it exceeds a maximum note namelength; and (iii) verifying that the first line of text is a valid notename.
 25. The apparatus of claim 24, wherein the program codeimplemented by the processing unit, further performs recognition todetermine the first line of text.
 26. The apparatus of claim 21, whereinthe note name is a default note name.
 27. The apparatus of claim 26,wherein the program code implemented by the processing unit, determinesthe default note name by: (a) determining if there is an active project;(b) if there is an active project, setting the note name to the nextproject default note name; and (c) if there is not an active project,setting the note name to the next non-project default note name.
 28. Theapparatus of claim 27, wherein the program code implemented by theprocessing unit sets the note name to the next non-project default notename by: (a) determining a note type; and (b) setting the note name tothe next default for the note type.
 29. The apparatus of claim 17,wherein providing an interface for a user to create a note comprisesproviding an interface for a user to create a note from a template. 30.The apparatus of claim 17, further comprising: (i) in response to a userrequesting a notes index window display, determining if there is anactive project; (ii) if there is an active project, displaying a notename and associated summary information for each of the notes associatedwith the active project; and (iii) if there is not an active project,displaying a note name and associated summary information for each ofthe notes for all projects.
 31. The apparatus of claim 30, wherein theprogram code implemented by the processing unit displays the note nameand associated note data for each of the notes in sorted order, inresponse to a user requesting sorting.